﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using AnalisisDeRiesgos.Dal;

namespace AnalisisDeRiesgos.Models.Risk
{
    public class DetailsRiskModel
    {
        public int RiskId { get; set; }

        [DisplayName("Codigo del riesgo")]
        [Required(ErrorMessage = "El Codigo del riesgo es requerido")]
        [StringLength(10, ErrorMessage = "El Codigo del riesgo no puede sobrepasar los 10 valores")]
        [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "El codigo del riesgo solo puede tener letras y numeros sin espacios")]
        public string RiskCode { get; set; }

        [DisplayName("Descripcion del riesgo")]
        [Required(ErrorMessage = "La descripcion del riesgo requerida")]
        [StringLength(50, ErrorMessage = "La descripcion del riesgo no puede sobrepasar los 50 valores")]
        [RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "La descripcion del riesgo solo puede tener letras y numeros ")]
        public string Name { get; set; }

        riskanalysisEntities entities = new riskanalysisEntities();

        public DetailsRiskModel(int id)
        {
            var query = from r in entities.risks
                        where r.riskId == id && r.enabled
                        select r;

            risk theRisk = query.FirstOrDefault();

            if (theRisk == null)
                throw new DetailsRiskException("El riesgo que usted busca no existe");

            RiskId = theRisk.riskId;
            RiskCode = theRisk.riskCode;
            Name = theRisk.name;
        }

        public void Delete()
        {
            var query = from r in entities.risks
                        where r.riskId == RiskId && r.enabled
                        select r;

            risk theRisk = query.FirstOrDefault();
            if (theRisk == null)
                throw new DetailsRiskException("El riesgo que usted busca no existe");

            theRisk.enabled = false;
            entities.SaveChanges();
        }
    }
}